<?php

Loader::using("models::entities::enums::EstadoPracticante");
Loader::using("models::entities::enums::EstadoSolicitud");
Loader::using("ext::libs::FactoryEmail::SmtpMail");
Loader::using("ext::libs::MicrosoftDateFormatter");
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ResponderSolicitud
 * 
 * @author ETorres
 * 
 * @export Modules
 * export-metadata RequiredRoles:ROLE_PRACTICES_COORDINATOR
 */
class ResponderSolicitud extends Module {

    public function index() {

        $id = $this->request->get("idSolicitud", NULL);

        if (is_numeric($id)) {

            $EstadoSolicitud = EstadoSolicitud::values();

            $solicitud = $this->model->applications->GetById($id);
            //var_dump($solicitud);
            $this->assign("solicitud", $solicitud);
            $this->assign("action", $this->route->action("AsignarPracticante"));
            $this->assign("UrlVolver", $this->route->moduleAction("VerSolicitudes", "index"));
            $this->display();
        } else {

            $this->assign("UrlVolver", $this->route->moduleAction("VerSolicitudes", "index"));

            $this->display("NoHaySolicitud");
        }
    }

    public function CambiarEstado() {

        if ($this->request->submitted()) {
            $Solicitud = new solicitudes();
            $Solicitud->setSolicitante(new Trabajadores());

            $this->model->solicitudes->Update($Solicitud);

            if ($Solicitud->getEstado() == 1) {
                $this->assign("IdSolicitud", $Solicitud);
                $this->display("InscribirPracticante");
            } else {
                $this->display();
            }
        } else {
            $this->index();
        }
    }

    public function NoHaySolicitud() {

        $this->assign("UrlVolver", $this->route->moduleAction("VerSolicitudes", "index"));

        $this->display();
    }

    public function AsignarPracticante() {
        $Solicitud = new Solicitudes();


        if ($this->request->submitted()) {

            $Solicitud->setPracticanteActual(new Practicantes());
            $Solicitud->setTutor(new Trabajadores());
            $this->request->bind($Solicitud);

            /* @var $miSolicitud Solicitudes */
            $miSolicitud = $this->model->applications->GetById($Solicitud->getIdSolicitud());

            $miSolicitud->setPracticanteActual($Solicitud->getPracticanteActual());
            $miSolicitud->setTutor($Solicitud->getTutor());
            $miSolicitud->setFechaIniciacion($Solicitud->getFechaIniciacion());
            $miSolicitud->setFechaFinalizacion($Solicitud->getFechaFinalizacion());


            $miSolicitud->getPracticanteActual()->setEstadoPracticante(EstadoPracticante::Iniciado);
            $miSolicitud->getPracticanteActual()->setFechaFinalizacion(null);
            $miSolicitud->getPracticanteActual()->setIdSolicitud($Solicitud->getIdSolicitud());
            $miSolicitud->setEstado(EstadoSolicitud::Procesada);
            $estudiante = $this->model->students->GetById($this->request->post("CodigoPracticante"));
          
            $miSolicitud->getPracticanteActual()->setEstudiante($estudiante);
         
            $emails = array();
            $emails[] = 'edson.arzuza@gmail.com';
            $message = "Muy cordialmente nos dirigimos a ustedes " . 
                    $miSolicitud->getEmpresa()->getNombre() . 
                    " para hacerles presente que la solicitud enviada por su parte fue recibida,dandonos a conocer la necesidad de brindarles a nuestros estudiantes la oportunidad de realizar sus pasantias en su entidad, asignando asi de manera inmediata al etudiante" ."". 
                    $miSolicitud->getPracticanteActual()->getEstudiante()->getNombres() . " " . $miSolicitud->getPracticanteActual()->getEstudiante()->getApellidos() ." ".
                    "el cual se estara acercando a sus instalaciones el dia " . "".
                    MicrosoftDateFormatter::fromJSON($miSolicitud->getFechaIniciacion(), "d/m/Y") . ""."".
                    "para dar inicio a su nueva faceta universitaria... Agradecidos por la atencion que se sirvan prestar al presente correo se suscribe a ustedes Universidad de San BuenAventura - Cartagena";
            $subject = "Notificacion de Asignacion de Practicante";
            $Mail = new SmtpMail($message, $subject, $emails, "smtp.gmail.com", "manlioferreira@gmail.com", "loquesea");
            $enviado = $Mail->SendMail();
            $miSolicitud->setEmpresa(null);
            $miSolicitud->setPlanEstudio(null);
            
            $this->addMessage(new Message("", "Dentro De Algunos Minutos Recibira Un Correo de Notificacion!", Message::SUCCESS));

            if ($Solicitud->getPracticanteActual()->getIsRemunerado()) {
                $miSolicitud->getPracticanteActual()->setRemuneracion($Solicitud->getPracticanteActual()->getRemuneracion());
            } else {
                //$miSolicitud->getPracticanteActual()->setRemuneracion(null);
            }

            $this->model->applications->Update($miSolicitud);

            $this->display();
        } else {
            $this->index();
        }
    }

    private $Practicante;

    public function getPracticante() {
        if (!$this->Practicante) {
            $this->Practicante = new Practicantes();
            $this->Practicante->setTutor(new Trabajadores());
        }

        return $this->Practicante;
    }

}

?>